using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._AviationTools._Airports._ObstructionIdentificationSurfaces
{
    /// <summary>
    /// <para>FAA FAR 77</para>
    /// <para>Creates obstruction identification surfaces (OIS) based on the FAA Part 77 specification. This regulation establishes standards and notification requirements for objects affecting navigable airspace. The type, function, and dimension of a surface differ by its runway classification. This tool creates surfaces as a polygon or multipatch features.</para>
    /// <para>根据 FAA 第 77 部分规范创建障碍物识别表面 （OIS）。该条例规定了影响通航空域的物体的标准和通知要求。表面的类型、功能和尺寸因跑道分类而异。此工具可将曲面创建为面或多面体要素。</para>
    /// </summary>    
    [DisplayName("FAA FAR 77")]
    public class FAAFAR77 : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public FAAFAR77()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_features">
        /// <para>Input Runway Features</para>
        /// <para>The input runway dataset. The feature class must be z-enabled and contain polylines.</para>
        /// <para>输入跑道数据集。要素类必须启用 z 并包含折线。</para>
        /// </param>
        /// <param name="_target">
        /// <para>Target OIS Features</para>
        /// <para>The target feature class that will contain the generated obstruction identification surfaces.</para>
        /// <para>将包含生成的障碍物识别表面的目标要素类。</para>
        /// </param>
        /// <param name="_high_runway_end_type">
        /// <para>High Runway End Classification</para>
        /// <para><xdoc>
        ///   <para>Specifies the classification of the high end of the runway.</para>
        ///   <bulletList>
        ///     <bullet_item>Construction or alteration on an airport with longest runway more than 3200 feet—Construction on or alteration to a runway longer than 3,200 feet with an imaginary surface that extends outward 20,000 feet and has a slope that does not exceed 100 to 1.</bullet_item><para/>
        ///     <bullet_item>Construction or alteration on an airport with longest runway less than 3200 feet—Construction on or alteration to a runway less than 3,200 feet long with an imaginary surface that extends outward 10,000 feet and has a slope that does not exceed 50 to 1.</bullet_item><para/>
        ///     <bullet_item>Construction or alteration on a heliport—Construction on or alteration to a heliport landing and takeoff area with an imaginary surface that extends outward 5,000 feet and has a slope that does not exceed 25 to 1.</bullet_item><para/>
        ///     <bullet_item>Military airport—Military airport runways are operated by an armed force of the United States. Primary surfaces are the same length as the runway. Primary surface width is 2,000 feet. Clear zone surface length is 1,000 feet, and width is the same as the primary surface. The approach clearance surface starts 200 feet beyond each end of the primary surface and extends for 50,000 feet. Approach surface width matches the primary surface width at the runway end but flares to a width of 16,000 feet at an elevation of 50,000 feet. Approach clearance surface slope is 50 to 1 to an elevation of 500 feet above airport elevation. It then rises horizontally to 50,000 feet. Transitional surface slope is 7 to 1 outward and upward at right angles to the runway centerline. See section 77.28 in the FAR Part 77 specification for more information.</bullet_item><para/>
        ///     <bullet_item>Non precision instrument runway greater than (>) 3/4 mile visibility—A runway with a nonprecision instrument approach procedure that allows for landing in visibility conditions greater than three-quarters of a mile.</bullet_item><para/>
        ///     <bullet_item>Non precision instrument runway less than (<) 3/4 mile visibility—A runway with a nonprecision instrument approach procedure that allows for landing in visibility conditions less than three-quarters of a mile.</bullet_item><para/>
        ///     <bullet_item>Precision instrument runway—A runway that uses Instrument Landing System (ILS) or Precision Approach Radar (PAR) for approach procedures.</bullet_item><para/>
        ///     <bullet_item>Utility runway visual approach—A runway built for propeller aircraft not exceeding 12,500 pounds gross weight. Aircraft using the runway employ visual approach procedures.</bullet_item><para/>
        ///     <bullet_item>Utility runway non precision instrument approach—A runway built for propeller aircraft not exceeding 12,500 pounds gross weight. The runway has an instrument approach procedure that uses air navigation facilities with horizontal guidance. It can also have area-type navigation equipment with approved nonprecision instrument approach procedures.</bullet_item><para/>
        ///     <bullet_item>Visual runway visual approach—A runway that supports only visual approach procedures.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定跑道高端的分类。</para>
        ///   <bulletList>
        ///     <bullet_item>在最长跑道超过 3200 英尺的机场上建造或改建 - 在长度超过 3,200 英尺的跑道上建造或改建，其假想表面向外延伸 20,000 英尺，坡度不超过 100 比 1。</bullet_item><para/>
        ///     <bullet_item>在最长跑道小于 3200 英尺的机场上建造或改建 - 在长度小于 3,200 英尺的跑道上建造或改建，其假想表面向外延伸 10,000 英尺，坡度不超过 50 比 1。</bullet_item><para/>
        ///     <bullet_item>直升机场的建造或改建 - 直升机场着陆和起飞区域的建造或改建，其假想表面向外延伸 5,000 英尺，坡度不超过 25：1。</bullet_item><para/>
        ///     <bullet_item>军用机场 - 军用机场跑道由美国武装部队运营。主表面的长度与跑道相同。主表面宽度为 2,000 英尺。净区表面长度为 1,000 英尺，宽度与主表面相同。进近间隙表面从主表面两端外 200 英尺处开始，延伸 50,000 英尺。进近面宽度与跑道末端的主要表面宽度相匹配，但在 16,000 英尺的高度时会扩口到 50,000 英尺的宽度。进近净空面坡度为 50 比 1，高于机场高程 500 英尺。然后它水平上升到 50,000 英尺。过渡表面坡度为7：1，与跑道中心线成直角。有关详细信息，请参阅 FAR 第 77 部分规范中的第 77.28 节。</bullet_item><para/>
        ///     <bullet_item>能见度大于 （>） 3/4 英里的非精密仪表跑道 - 具有非精密仪表进近程序的跑道，允许在大于四分之三英里的能见度条件下着陆。</bullet_item><para/>
        /// <bullet_item>能见度小于 （<） 3/4 英里的非精密仪表跑道 - 具有非精密仪表进近程序的跑道，允许在能见度小于四分之三英里的条件下着陆。</bullet_item><para/>
        ///     <bullet_item>精密仪表跑道 - 使用仪表着陆系统 （ILS） 或精确进近雷达 （PAR） 进行进近程序的跑道。</bullet_item><para/>
        ///     <bullet_item>实用跑道目视进近 - 为总重量不超过 12,500 磅的螺旋桨飞机建造的跑道。使用跑道的飞机采用目视进近程序。</bullet_item><para/>
        ///     <bullet_item>实用跑道非精密仪表进近 - 为总重量不超过 12,500 磅的螺旋桨飞机建造的跑道。跑道有一个仪表进近程序，使用带有水平引导的空中导航设施。它还可以拥有具有经批准的非精密仪器进近程序的区域型导航设备。</bullet_item><para/>
        ///     <bullet_item>目视跑道目视进近 - 仅支持目视进近程序的跑道。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_low_runway_end_type">
        /// <para>Low Runway End Classification</para>
        /// <para><xdoc>
        ///   <para>Specifies the classification of the low end of the runway.</para>
        ///   <bulletList>
        ///     <bullet_item>Same as high runway end classification—No low runway end type.</bullet_item><para/>
        ///     <bullet_item>Non precision instrument runway greater than (>) 3/4 mile visibility—A runway with a nonprecision instrument approach procedure that allows for landing in visibility conditions greater than three-quarters of a mile.</bullet_item><para/>
        ///     <bullet_item>Non precision instrument runway less than (<) 3/4 mile visibility—A runway with a nonprecision instrument approach procedure that allows for landing in visibility conditions less than three-quarters of a mile.</bullet_item><para/>
        ///     <bullet_item>Precision instrument runway—A runway that uses Instrument Landing System (ILS) or Precision Approach Radar (PAR) for approach procedures.</bullet_item><para/>
        ///     <bullet_item>Utility runway visual approach—A runway built for propeller aircraft not exceeding 12,500 pounds gross weight. Aircraft using the runway employ visual approach procedures.</bullet_item><para/>
        ///     <bullet_item>Utility runway non precision instrument approach—A runway built for propeller aircraft not exceeding 12,500 pounds gross weight. The runway has an instrument approach procedure that uses air navigation facilities with horizontal guidance. It can also have area-type navigation equipment with approved nonprecision instrument approach procedures.</bullet_item><para/>
        ///     <bullet_item>Visual runway visual approach—A runway that supports only visual approach procedures.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定跑道低端的分类。</para>
        ///   <bulletList>
        ///     <bullet_item>与高跑道末端分类相同 - 无低跑道末端类型。</bullet_item><para/>
        ///     <bullet_item>能见度大于 （>） 3/4 英里的非精密仪表跑道 - 具有非精密仪表进近程序的跑道，允许在大于四分之三英里的能见度条件下着陆。</bullet_item><para/>
        /// <bullet_item>能见度小于 （<） 3/4 英里的非精密仪表跑道 - 具有非精密仪表进近程序的跑道，允许在能见度小于四分之三英里的条件下着陆。</bullet_item><para/>
        ///     <bullet_item>精密仪表跑道 - 使用仪表着陆系统 （ILS） 或精确进近雷达 （PAR） 进行进近程序的跑道。</bullet_item><para/>
        ///     <bullet_item>实用跑道目视进近 - 为总重量不超过 12,500 磅的螺旋桨飞机建造的跑道。使用跑道的飞机采用目视进近程序。</bullet_item><para/>
        ///     <bullet_item>实用跑道非精密仪表进近 - 为总重量不超过 12,500 磅的螺旋桨飞机建造的跑道。跑道有一个仪表进近程序，使用带有水平引导的空中导航设施。它还可以拥有具有经批准的非精密仪器进近程序的区域型导航设备。</bullet_item><para/>
        ///     <bullet_item>目视跑道目视进近 - 仅支持目视进近程序的跑道。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public FAAFAR77(object _in_features, object _target, _high_runway_end_type_value? _high_runway_end_type, _low_runway_end_type_value _low_runway_end_type)
        {
            this._in_features = _in_features;
            this._target = _target;
            this._high_runway_end_type = _high_runway_end_type;
            this._low_runway_end_type = _low_runway_end_type;
        }
        public override string ToolboxName => "Aviation Tools";

        public override string ToolName => "FAA FAR 77";

        public override string CallName => "aviation.FAAFAR77";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_in_features, _target, _high_runway_end_type.GetGPValue(), _low_runway_end_type.GetGPValue(), _specially_prepared_hard_surface_runway.GetGPValue(), _highend_clear_way_length, _lowend_clear_way_length, _airport_elevation, _include_merged_surface.GetGPValue(), _derived_outfeatureclass, _custom_json_file, _airport_control_point_feature_class];

        /// <summary>
        /// <para>Input Runway Features</para>
        /// <para>The input runway dataset. The feature class must be z-enabled and contain polylines.</para>
        /// <para>输入跑道数据集。要素类必须启用 z 并包含折线。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Runway Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_features { get; set; }


        /// <summary>
        /// <para>Target OIS Features</para>
        /// <para>The target feature class that will contain the generated obstruction identification surfaces.</para>
        /// <para>将包含生成的障碍物识别表面的目标要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target OIS Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target { get; set; }


        /// <summary>
        /// <para>High Runway End Classification</para>
        /// <para><xdoc>
        ///   <para>Specifies the classification of the high end of the runway.</para>
        ///   <bulletList>
        ///     <bullet_item>Construction or alteration on an airport with longest runway more than 3200 feet—Construction on or alteration to a runway longer than 3,200 feet with an imaginary surface that extends outward 20,000 feet and has a slope that does not exceed 100 to 1.</bullet_item><para/>
        ///     <bullet_item>Construction or alteration on an airport with longest runway less than 3200 feet—Construction on or alteration to a runway less than 3,200 feet long with an imaginary surface that extends outward 10,000 feet and has a slope that does not exceed 50 to 1.</bullet_item><para/>
        ///     <bullet_item>Construction or alteration on a heliport—Construction on or alteration to a heliport landing and takeoff area with an imaginary surface that extends outward 5,000 feet and has a slope that does not exceed 25 to 1.</bullet_item><para/>
        ///     <bullet_item>Military airport—Military airport runways are operated by an armed force of the United States. Primary surfaces are the same length as the runway. Primary surface width is 2,000 feet. Clear zone surface length is 1,000 feet, and width is the same as the primary surface. The approach clearance surface starts 200 feet beyond each end of the primary surface and extends for 50,000 feet. Approach surface width matches the primary surface width at the runway end but flares to a width of 16,000 feet at an elevation of 50,000 feet. Approach clearance surface slope is 50 to 1 to an elevation of 500 feet above airport elevation. It then rises horizontally to 50,000 feet. Transitional surface slope is 7 to 1 outward and upward at right angles to the runway centerline. See section 77.28 in the FAR Part 77 specification for more information.</bullet_item><para/>
        ///     <bullet_item>Non precision instrument runway greater than (>) 3/4 mile visibility—A runway with a nonprecision instrument approach procedure that allows for landing in visibility conditions greater than three-quarters of a mile.</bullet_item><para/>
        ///     <bullet_item>Non precision instrument runway less than (<) 3/4 mile visibility—A runway with a nonprecision instrument approach procedure that allows for landing in visibility conditions less than three-quarters of a mile.</bullet_item><para/>
        ///     <bullet_item>Precision instrument runway—A runway that uses Instrument Landing System (ILS) or Precision Approach Radar (PAR) for approach procedures.</bullet_item><para/>
        ///     <bullet_item>Utility runway visual approach—A runway built for propeller aircraft not exceeding 12,500 pounds gross weight. Aircraft using the runway employ visual approach procedures.</bullet_item><para/>
        ///     <bullet_item>Utility runway non precision instrument approach—A runway built for propeller aircraft not exceeding 12,500 pounds gross weight. The runway has an instrument approach procedure that uses air navigation facilities with horizontal guidance. It can also have area-type navigation equipment with approved nonprecision instrument approach procedures.</bullet_item><para/>
        ///     <bullet_item>Visual runway visual approach—A runway that supports only visual approach procedures.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定跑道高端的分类。</para>
        ///   <bulletList>
        ///     <bullet_item>在最长跑道超过 3200 英尺的机场上建造或改建 - 在长度超过 3,200 英尺的跑道上建造或改建，其假想表面向外延伸 20,000 英尺，坡度不超过 100 比 1。</bullet_item><para/>
        ///     <bullet_item>在最长跑道小于 3200 英尺的机场上建造或改建 - 在长度小于 3,200 英尺的跑道上建造或改建，其假想表面向外延伸 10,000 英尺，坡度不超过 50 比 1。</bullet_item><para/>
        ///     <bullet_item>直升机场的建造或改建 - 直升机场着陆和起飞区域的建造或改建，其假想表面向外延伸 5,000 英尺，坡度不超过 25：1。</bullet_item><para/>
        ///     <bullet_item>军用机场 - 军用机场跑道由美国武装部队运营。主表面的长度与跑道相同。主表面宽度为 2,000 英尺。净区表面长度为 1,000 英尺，宽度与主表面相同。进近间隙表面从主表面两端外 200 英尺处开始，延伸 50,000 英尺。进近面宽度与跑道末端的主要表面宽度相匹配，但在 16,000 英尺的高度时会扩口到 50,000 英尺的宽度。进近净空面坡度为 50 比 1，高于机场高程 500 英尺。然后它水平上升到 50,000 英尺。过渡表面坡度为7：1，与跑道中心线成直角。有关详细信息，请参阅 FAR 第 77 部分规范中的第 77.28 节。</bullet_item><para/>
        ///     <bullet_item>能见度大于 （>） 3/4 英里的非精密仪表跑道 - 具有非精密仪表进近程序的跑道，允许在大于四分之三英里的能见度条件下着陆。</bullet_item><para/>
        /// <bullet_item>能见度小于 （<） 3/4 英里的非精密仪表跑道 - 具有非精密仪表进近程序的跑道，允许在能见度小于四分之三英里的条件下着陆。</bullet_item><para/>
        ///     <bullet_item>精密仪表跑道 - 使用仪表着陆系统 （ILS） 或精确进近雷达 （PAR） 进行进近程序的跑道。</bullet_item><para/>
        ///     <bullet_item>实用跑道目视进近 - 为总重量不超过 12,500 磅的螺旋桨飞机建造的跑道。使用跑道的飞机采用目视进近程序。</bullet_item><para/>
        ///     <bullet_item>实用跑道非精密仪表进近 - 为总重量不超过 12,500 磅的螺旋桨飞机建造的跑道。跑道有一个仪表进近程序，使用带有水平引导的空中导航设施。它还可以拥有具有经批准的非精密仪器进近程序的区域型导航设备。</bullet_item><para/>
        ///     <bullet_item>目视跑道目视进近 - 仅支持目视进近程序的跑道。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("High Runway End Classification")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _high_runway_end_type_value? _high_runway_end_type { get; set; }

        public enum _high_runway_end_type_value
        {
            /// <summary>
            /// <para>Construction or alteration on an airport with longest runway more than 3200 feet</para>
            /// <para>Construction or alteration on an airport with longest runway more than 3200 feet—Construction on or alteration to a runway longer than 3,200 feet with an imaginary surface that extends outward 20,000 feet and has a slope that does not exceed 100 to 1.</para>
            /// <para>在最长跑道超过 3200 英尺的机场上建造或改建 - 在长度超过 3,200 英尺的跑道上建造或改建，其假想表面向外延伸 20,000 英尺，坡度不超过 100 比 1。</para>
            /// </summary>
            [Description("Construction or alteration on an airport with longest runway more than 3200 feet")]
            [GPEnumValue("CONSTRUCTION_OR_ALTERATION_ON_AN_AIRPORT_WITH_LONGEST_RUNWAY_MORE_THAN_3200_FEET")]
            _CONSTRUCTION_OR_ALTERATION_ON_AN_AIRPORT_WITH_LONGEST_RUNWAY_MORE_THAN_3200_FEET,

            /// <summary>
            /// <para>Construction or alteration on an airport with longest runway less than 3200 feet</para>
            /// <para>Construction or alteration on an airport with longest runway less than 3200 feet—Construction on or alteration to a runway less than 3,200 feet long with an imaginary surface that extends outward 10,000 feet and has a slope that does not exceed 50 to 1.</para>
            /// <para>在最长跑道小于 3200 英尺的机场上建造或改建 - 在长度小于 3,200 英尺的跑道上建造或改建，其假想表面向外延伸 10,000 英尺，坡度不超过 50 比 1。</para>
            /// </summary>
            [Description("Construction or alteration on an airport with longest runway less than 3200 feet")]
            [GPEnumValue("CONSTRUCTION_OR_ALTERATION_ON_AN_AIRPORT_WITH_LONGEST_RUNWAY_LESS_THAN_3200_FEET")]
            _CONSTRUCTION_OR_ALTERATION_ON_AN_AIRPORT_WITH_LONGEST_RUNWAY_LESS_THAN_3200_FEET,

            /// <summary>
            /// <para>Construction or alteration on a heliport</para>
            /// <para>Construction or alteration on a heliport—Construction on or alteration to a heliport landing and takeoff area with an imaginary surface that extends outward 5,000 feet and has a slope that does not exceed 25 to 1.</para>
            /// <para>直升机场的建造或改建 - 直升机场着陆和起飞区域的建造或改建，其假想表面向外延伸 5,000 英尺，坡度不超过 25：1。</para>
            /// </summary>
            [Description("Construction or alteration on a heliport")]
            [GPEnumValue("CONSTRUCTION_OR_ALTERATION_ON_A_HELIPORT")]
            _CONSTRUCTION_OR_ALTERATION_ON_A_HELIPORT,

            /// <summary>
            /// <para>Military airport</para>
            /// <para>Military airport—Military airport runways are operated by an armed force of the United States. Primary surfaces are the same length as the runway. Primary surface width is 2,000 feet. Clear zone surface length is 1,000 feet, and width is the same as the primary surface. The approach clearance surface starts 200 feet beyond each end of the primary surface and extends for 50,000 feet. Approach surface width matches the primary surface width at the runway end but flares to a width of 16,000 feet at an elevation of 50,000 feet. Approach clearance surface slope is 50 to 1 to an elevation of 500 feet above airport elevation. It then rises horizontally to 50,000 feet. Transitional surface slope is 7 to 1 outward and upward at right angles to the runway centerline. See section 77.28 in the FAR Part 77 specification for more information.</para>
            /// <para>军用机场 - 军用机场跑道由美国武装部队运营。主表面的长度与跑道相同。主表面宽度为 2,000 英尺。净区表面长度为 1,000 英尺，宽度与主表面相同。进近间隙表面从主表面两端外 200 英尺处开始，延伸 50,000 英尺。进近面宽度与跑道末端的主要表面宽度相匹配，但在 16,000 英尺的高度时会扩口到 50,000 英尺的宽度。进近净空面坡度为 50 比 1，高于机场高程 500 英尺。然后它水平上升到 50,000 英尺。过渡表面坡度为7：1，与跑道中心线成直角。有关详细信息，请参阅 FAR 第 77 部分规范中的第 77.28 节。</para>
            /// </summary>
            [Description("Military airport")]
            [GPEnumValue("MILITARY_AIRPORT")]
            _MILITARY_AIRPORT,

            /// <summary>
            /// <para>Non precision instrument runway greater than (>) 3/4 mile visibility</para>
            /// <para>Non precision instrument runway greater than (>) 3/4 mile visibility—A runway with a nonprecision instrument approach procedure that allows for landing in visibility conditions greater than three-quarters of a mile.</para>
            /// <para>能见度大于 （>） 3/4 英里的非精密仪表跑道 - 具有非精密仪表进近程序的跑道，允许在大于四分之三英里的能见度条件下着陆。</para>
            /// </summary>
            [Description("Non precision instrument runway greater than (>) 3/4 mile visibility")]
            [GPEnumValue("NONPRECISION_INSTRUMENT_RUNWAY_GREATER_THAN_(>)_3/4_MILE_VISIBILITY")]
            value4,

            /// <summary>
            /// <para>Non precision instrument runway less than (<) 3/4 mile visibility</para>
            /// <para>Non precision instrument runway less than (<) 3/4 mile visibility—A runway with a nonprecision instrument approach procedure that allows for landing in visibility conditions less than three-quarters of a mile.</para>
            /// <para>能见度小于 （<） 3/4 英里的非精密仪表跑道 - 具有非精密仪表进近程序的跑道，允许在能见度小于四分之三英里的条件下着陆。</para>
            /// </summary>
            [Description("Non precision instrument runway less than (<) 3/4 mile visibility")]
            [GPEnumValue("NONPRECISION_INSTRUMENT_RUNWAY_LESS_THAN_(<)_3/4_MILE_VISIBILITY")]
            value5,

            /// <summary>
            /// <para>Precision instrument runway</para>
            /// <para>Precision instrument runway—A runway that uses Instrument Landing System (ILS) or Precision Approach Radar (PAR) for approach procedures.</para>
            /// <para>精密仪表跑道 - 使用仪表着陆系统 （ILS） 或精确进近雷达 （PAR） 进行进近程序的跑道。</para>
            /// </summary>
            [Description("Precision instrument runway")]
            [GPEnumValue("PRECISION_INSTRUMENT_RUNWAY")]
            _PRECISION_INSTRUMENT_RUNWAY,

            /// <summary>
            /// <para>Utility runway visual approach</para>
            /// <para>Utility runway visual approach—A runway built for propeller aircraft not exceeding 12,500 pounds gross weight. Aircraft using the runway employ visual approach procedures.</para>
            /// <para>实用跑道目视进近 - 为总重量不超过 12,500 磅的螺旋桨飞机建造的跑道。使用跑道的飞机采用目视进近程序。</para>
            /// </summary>
            [Description("Utility runway visual approach")]
            [GPEnumValue("UTILITY_RUNWAY_VISUAL_APPROACH")]
            _UTILITY_RUNWAY_VISUAL_APPROACH,

            /// <summary>
            /// <para>Utility runway non precision instrument approach</para>
            /// <para>Utility runway non precision instrument approach—A runway built for propeller aircraft not exceeding 12,500 pounds gross weight. The runway has an instrument approach procedure that uses air navigation facilities with horizontal guidance. It can also have area-type navigation equipment with approved nonprecision instrument approach procedures.</para>
            /// <para>实用跑道非精密仪表进近 - 为总重量不超过 12,500 磅的螺旋桨飞机建造的跑道。跑道有一个仪表进近程序，使用带有水平引导的空中导航设施。它还可以拥有具有经批准的非精密仪器进近程序的区域型导航设备。</para>
            /// </summary>
            [Description("Utility runway non precision instrument approach")]
            [GPEnumValue("UTILITY_RUNWAY_NON_PRECISION_INSTRUMENT_APPROACH")]
            _UTILITY_RUNWAY_NON_PRECISION_INSTRUMENT_APPROACH,

            /// <summary>
            /// <para>Visual runway visual approach</para>
            /// <para>Visual runway visual approach—A runway that supports only visual approach procedures.</para>
            /// <para>目视跑道目视进近 - 仅支持目视进近程序的跑道。</para>
            /// </summary>
            [Description("Visual runway visual approach")]
            [GPEnumValue("VISUAL_RUNWAY_VISUAL_APPROACH")]
            _VISUAL_RUNWAY_VISUAL_APPROACH,

        }

        /// <summary>
        /// <para>Low Runway End Classification</para>
        /// <para><xdoc>
        ///   <para>Specifies the classification of the low end of the runway.</para>
        ///   <bulletList>
        ///     <bullet_item>Same as high runway end classification—No low runway end type.</bullet_item><para/>
        ///     <bullet_item>Non precision instrument runway greater than (>) 3/4 mile visibility—A runway with a nonprecision instrument approach procedure that allows for landing in visibility conditions greater than three-quarters of a mile.</bullet_item><para/>
        ///     <bullet_item>Non precision instrument runway less than (<) 3/4 mile visibility—A runway with a nonprecision instrument approach procedure that allows for landing in visibility conditions less than three-quarters of a mile.</bullet_item><para/>
        ///     <bullet_item>Precision instrument runway—A runway that uses Instrument Landing System (ILS) or Precision Approach Radar (PAR) for approach procedures.</bullet_item><para/>
        ///     <bullet_item>Utility runway visual approach—A runway built for propeller aircraft not exceeding 12,500 pounds gross weight. Aircraft using the runway employ visual approach procedures.</bullet_item><para/>
        ///     <bullet_item>Utility runway non precision instrument approach—A runway built for propeller aircraft not exceeding 12,500 pounds gross weight. The runway has an instrument approach procedure that uses air navigation facilities with horizontal guidance. It can also have area-type navigation equipment with approved nonprecision instrument approach procedures.</bullet_item><para/>
        ///     <bullet_item>Visual runway visual approach—A runway that supports only visual approach procedures.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定跑道低端的分类。</para>
        ///   <bulletList>
        ///     <bullet_item>与高跑道末端分类相同 - 无低跑道末端类型。</bullet_item><para/>
        ///     <bullet_item>能见度大于 （>） 3/4 英里的非精密仪表跑道 - 具有非精密仪表进近程序的跑道，允许在大于四分之三英里的能见度条件下着陆。</bullet_item><para/>
        /// <bullet_item>能见度小于 （<） 3/4 英里的非精密仪表跑道 - 具有非精密仪表进近程序的跑道，允许在能见度小于四分之三英里的条件下着陆。</bullet_item><para/>
        ///     <bullet_item>精密仪表跑道 - 使用仪表着陆系统 （ILS） 或精确进近雷达 （PAR） 进行进近程序的跑道。</bullet_item><para/>
        ///     <bullet_item>实用跑道目视进近 - 为总重量不超过 12,500 磅的螺旋桨飞机建造的跑道。使用跑道的飞机采用目视进近程序。</bullet_item><para/>
        ///     <bullet_item>实用跑道非精密仪表进近 - 为总重量不超过 12,500 磅的螺旋桨飞机建造的跑道。跑道有一个仪表进近程序，使用带有水平引导的空中导航设施。它还可以拥有具有经批准的非精密仪器进近程序的区域型导航设备。</bullet_item><para/>
        ///     <bullet_item>目视跑道目视进近 - 仅支持目视进近程序的跑道。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Low Runway End Classification")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _low_runway_end_type_value _low_runway_end_type { get; set; }

        public enum _low_runway_end_type_value
        {
            /// <summary>
            /// <para>Same as high runway end classification</para>
            /// <para>Same as high runway end classification—No low runway end type.</para>
            /// <para>与高跑道末端分类相同 - 无低跑道末端类型。</para>
            /// </summary>
            [Description("Same as high runway end classification")]
            [GPEnumValue("SAME_AS_HIGH_RUNWAY_END_CLASSIFICATION")]
            _SAME_AS_HIGH_RUNWAY_END_CLASSIFICATION,

            /// <summary>
            /// <para>Non precision instrument runway greater than (>) 3/4 mile visibility</para>
            /// <para>Non precision instrument runway greater than (>) 3/4 mile visibility—A runway with a nonprecision instrument approach procedure that allows for landing in visibility conditions greater than three-quarters of a mile.</para>
            /// <para>能见度大于 （>） 3/4 英里的非精密仪表跑道 - 具有非精密仪表进近程序的跑道，允许在大于四分之三英里的能见度条件下着陆。</para>
            /// </summary>
            [Description("Non precision instrument runway greater than (>) 3/4 mile visibility")]
            [GPEnumValue("NONPRECISION_INSTRUMENT_RUNWAY_GREATER_THAN_(>)_3/4_MILE_VISIBILITY")]
            value1,

            /// <summary>
            /// <para>Non precision instrument runway less than (<) 3/4 mile visibility</para>
            /// <para>Non precision instrument runway less than (<) 3/4 mile visibility—A runway with a nonprecision instrument approach procedure that allows for landing in visibility conditions less than three-quarters of a mile.</para>
            /// <para>能见度小于 （<） 3/4 英里的非精密仪表跑道 - 具有非精密仪表进近程序的跑道，允许在能见度小于四分之三英里的条件下着陆。</para>
            /// </summary>
            [Description("Non precision instrument runway less than (<) 3/4 mile visibility")]
            [GPEnumValue("NONPRECISION_INSTRUMENT_RUNWAY_LESS_THAN_(<)_3/4_MILE_VISIBILITY")]
            value2,

            /// <summary>
            /// <para>Precision instrument runway</para>
            /// <para>Precision instrument runway—A runway that uses Instrument Landing System (ILS) or Precision Approach Radar (PAR) for approach procedures.</para>
            /// <para>精密仪表跑道 - 使用仪表着陆系统 （ILS） 或精确进近雷达 （PAR） 进行进近程序的跑道。</para>
            /// </summary>
            [Description("Precision instrument runway")]
            [GPEnumValue("PRECISION_INSTRUMENT_RUNWAY")]
            _PRECISION_INSTRUMENT_RUNWAY,

            /// <summary>
            /// <para>Utility runway visual approach</para>
            /// <para>Utility runway visual approach—A runway built for propeller aircraft not exceeding 12,500 pounds gross weight. Aircraft using the runway employ visual approach procedures.</para>
            /// <para>实用跑道目视进近 - 为总重量不超过 12,500 磅的螺旋桨飞机建造的跑道。使用跑道的飞机采用目视进近程序。</para>
            /// </summary>
            [Description("Utility runway visual approach")]
            [GPEnumValue("UTILITY_RUNWAY_VISUAL_APPROACH")]
            _UTILITY_RUNWAY_VISUAL_APPROACH,

            /// <summary>
            /// <para>Utility runway non precision instrument approach</para>
            /// <para>Utility runway non precision instrument approach—A runway built for propeller aircraft not exceeding 12,500 pounds gross weight. The runway has an instrument approach procedure that uses air navigation facilities with horizontal guidance. It can also have area-type navigation equipment with approved nonprecision instrument approach procedures.</para>
            /// <para>实用跑道非精密仪表进近 - 为总重量不超过 12,500 磅的螺旋桨飞机建造的跑道。跑道有一个仪表进近程序，使用带有水平引导的空中导航设施。它还可以拥有具有经批准的非精密仪器进近程序的区域型导航设备。</para>
            /// </summary>
            [Description("Utility runway non precision instrument approach")]
            [GPEnumValue("UTILITY_RUNWAY_NON_PRECISION_INSTRUMENT_APPROACH")]
            _UTILITY_RUNWAY_NON_PRECISION_INSTRUMENT_APPROACH,

            /// <summary>
            /// <para>Visual runway visual approach</para>
            /// <para>Visual runway visual approach—A runway that supports only visual approach procedures.</para>
            /// <para>目视跑道目视进近 - 仅支持目视进近程序的跑道。</para>
            /// </summary>
            [Description("Visual runway visual approach")]
            [GPEnumValue("VISUAL_RUNWAY_VISUAL_APPROACH")]
            _VISUAL_RUNWAY_VISUAL_APPROACH,

        }

        /// <summary>
        /// <para>Specially Prepared Hard Surface Runway</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the runway has a specially prepared hard surface. A specially prepared hard surface indicates that the primary surface extends 200 feet beyond each end of the runway.</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>Checked—The runway has a specially prepared hard surface. This is the default.</bullet_item><para/>
        ///       <bullet_item>Unchecked—The runway does not have a specially prepared hard surface.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定跑道是否具有专门准备的硬表面。特制的硬表面表明主表面延伸到跑道两端之外 200 英尺。</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>选中 - 跑道具有专门准备的硬表面。这是默认设置。</bullet_item><para/>
        ///       <bullet_item>未选中 - 跑道没有专门准备的硬表面。</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Specially Prepared Hard Surface Runway")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _specially_prepared_hard_surface_runway_value _specially_prepared_hard_surface_runway { get; set; } = _specially_prepared_hard_surface_runway_value._true;

        public enum _specially_prepared_hard_surface_runway_value
        {
            /// <summary>
            /// <para>SPECIALLY_PREPARED_HARD_SURFACE_RUNWAY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SPECIALLY_PREPARED_HARD_SURFACE_RUNWAY")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NON_SPECIALLY_PREPARED_HARD_SURFACE_RUNWAY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NON_SPECIALLY_PREPARED_HARD_SURFACE_RUNWAY")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Length of High Runway End Clearway</para>
        /// <para>The length of the area at the high end of the runway. The unit of measurement is based on the input runway features.</para>
        /// <para>跑道高端区域的长度。测量单位基于输入跑道特征。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Length of High Runway End Clearway")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _highend_clear_way_length { get; set; } = 0;


        /// <summary>
        /// <para>Length of Low Runway End Clearway</para>
        /// <para>The length of the area at the low end of the runway. The unit of measurement is based on the input runway features.</para>
        /// <para>跑道低端区域的长度。测量单位基于输入跑道特征。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Length of Low Runway End Clearway")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _lowend_clear_way_length { get; set; } = 0;


        /// <summary>
        /// <para>Airport Elevation</para>
        /// <para>The highest elevation on any of the runways of the airport. The value should be in the vertical coordinate system linear units of the target feature class. If no value is provided, the highest point from the Input Runway Features parameter value will be used.</para>
        /// <para>机场任何跑道上的最高海拔。该值应采用目标要素类的垂直坐标系线性单位。如果未提供值，则将使用输入跑道要素参数值的最高点。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Airport Elevation")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _airport_elevation { get; set; } = 0;


        /// <summary>
        /// <para>Include Merged Surfaces</para>
        /// <para><xdoc>
        ///   <para>Specifies whether merged horizontal and conical surfaces are included in the OIS in addition to the regular surfaces.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Merged surfaces are included in the OIS output. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Merged surfaces are not included in the OIS output.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定除常规曲面外，OIS 中是否还包括合并的水平曲面和锥形曲面。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 （Checked） - 合并曲面包含在 OIS 输出中。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 （Unchecked） - 合并曲面不包括在 OIS 输出中。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Merged Surfaces")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_merged_surface_value _include_merged_surface { get; set; } = _include_merged_surface_value._true;

        public enum _include_merged_surface_value
        {
            /// <summary>
            /// <para>INCLUDE_MERGED_SURFACE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_MERGED_SURFACE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NOT_INCLUDE_MERGED_SURFACE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NOT_INCLUDE_MERGED_SURFACE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Output OIS Features</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output OIS Features")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _derived_outfeatureclass { get; set; }


        /// <summary>
        /// <para>Custom JSON File</para>
        /// <para>The import configuration, in JSON format, that creates the custom OIS.</para>
        /// <para>用于创建自定义 OIS 的 JSON 格式的导入配置。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Custom JSON File")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _custom_json_file { get; set; } = null;


        /// <summary>
        /// <para>Input Airport Control Point Feature</para>
        /// <para>The point features containing an Airport Elevation feature, displaced threshold features, or both. Values provided for the Airport Elevation parameter will take precedence over these point features.</para>
        /// <para>包含机场高程要素和/或位移阈值要素的点要素。为机场高程参数提供的值将优先于这些点要素。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Airport Control Point Feature")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _airport_control_point_feature_class { get; set; } = null;


        public FAAFAR77 SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}